Node.js Process Management

আপনার Node.js অ্যাপ্লিকেশনের জীবনচক্র পরিচালনা করতে শিখুন

প্রক্রিয়া ব্যবস্থাপনা কি?

Node.js Process Management .

এটি অন্তর্ভুক্ত:

অ্যাপ্লিকেশন শুরু করা এবং বন্ধ করা

আপনার Node.js অ্যাপ্লিকেশন নিয়ন্ত্রণ করা

ক্র্যাশের পর পুনরায় চালু হচ্ছে

স্বয়ংক্রিয় রিস্টার্ট মেকানিজম

কর্মক্ষমতা নিরীক্ষণ

মেমরি এবং CPU ব্যবহার নিরীক্ষণ

কম্পিউটার সংকেত ম্যানিপুলেশন

SIGINT, SIGTERM ইত্যাদির মতো সংকেত পরিচালনা করা

পরিবেশের ভেরিয়েবল পরিচালনা করা

বিভিন্ন প্রসঙ্গের জন্য কাঠামো

প্রক্রিয়া তথ্য অ্যাক্সেস

প্রসেস অবজেক্ট বর্তমান Node.js প্রক্রিয়া সম্পর্কে বিশদ বিবরণ প্রদান করে এবং নিয়ন্ত্রণ প্রদান করে।

এখানে কিছু দরকারী বৈশিষ্ট্য আছে:

// Process identification
console.log('Process ID (PID):', process.pid);

// Platform information
console.log('Platform:', process.platform);
console.log('Node.js version:', process.version);

// Memory usage (in bytes)
console.log('Memory usage:', process.memoryUsage());

// Command line arguments
console.log('Arguments:', process.argv);

প্রক্রিয়া থেকে প্রস্থান করা হচ্ছে

যখন আপনার Node.js প্রোগ্রাম এই পদ্ধতিগুলি ব্যবহার করা বন্ধ করে তখন আপনি নিয়ন্ত্রণ করতে পারেন:

1. স্বাভাবিক স্রাব

// Exit with success (status code 0)
process.exit();

// Or explicitly
process.exit(0);

2. ত্রুটি সঙ্গে স্রাব

// Exit with error (status code 1)
process.exit(1);

3. স্রাব আগে ইভেন্ট

// Run cleanup before exiting
process.on('beforeExit', (code) => {
  console.log('About to exit with code:', code);
});

হ্যান্ডলিং প্রক্রিয়া ইভেন্ট

Node.js processes .

এখানে সবচেয়ে সাধারণ কিছু আছে:

1. Ctrl+C (SIGINT) পরিচালনা করা।

// Handle Ctrl+C
process.on('SIGINT', () => {
console.log('\nGot SIGINT. Press Control-D to exit.');
// Perform cleanup if needed
process.exit(0);

2. প্রসেস টার্মিনেশন হ্যান্ডলিং (SIGTERM)

process.on('SIGTERM', () => {
  console.log('Received SIGTERM. Cleaning up...');
  // Perform cleanup if needed
  process.exit(0);
});

3. সার্ভার শাটডাউন সহ SIGTERM পরিচালনা করা

process.on('SIGTERM', () => {
  console.log('Received SIGTERM. Cleaning up...');
  server.close(() => {
    console.log('Server closed');
    process.exit(0);
  });
});

4. ধরা না পড়া ব্যতিক্রম

process.on('uncaughtException', (err) => {
  console.error('Uncaught Exception:', err);
  // Perform cleanup if needed
  process.exit(1); // Exit with error
});

প্রসেস ম্যানেজার

উত্পাদন পরিবেশের জন্য, আপনার অ্যাপ্লিকেশনটি মসৃণভাবে চলমান রাখতে একটি প্রক্রিয়া পরিচালক ব্যবহার করুন।

PM2 সবচেয়ে জনপ্রিয় পছন্দ:

1. গ্লোবাল মোডে PM2 ইনস্টল করুন

npm install -g pm2

2. বেসিক PM2 কমান্ড

# Start an application
pm2 start app.js

# List all running applications
pm2 list

# Monitor resources
pm2 monit

# View application logs
pm2 logs

# Stop an application
pm2 stop app_name

# Restart an application
pm2 restart app_name

# Delete an application from PM2
pm2 delete app_name

3. PM2 কনফিগারেশন

উন্নত কনফিগারেশনের জন্য ইকোসিস্টেম ফাইল তৈরি করুন:

// ecosystem.config.js
module.exports = {
  apps: [{
    name: 'my-app',
    script: 'app.js',
    instances: 'max',
    autorestart: true,
    watch: false,
    max_memory_restart: '1G',
    env: {
      NODE_ENV: 'development',
    },
    env_production: {
      NODE_ENV: 'production',
    }
  }]
};

🚀PM2 বৈশিষ্ট্য:

PM2 লোড ব্যালেন্সিং, মনিটরিং এবং লক ম্যানেজমেন্টের মতো অনেক বৈশিষ্ট্য অফার করে।

পরিবেশ পরিবর্তনশীল

কনটেক্সট ভেরিয়েবল হল মূল-মানের জোড়া যা আপনার অ্যাপ্লিকেশনের আচরণকে বিভিন্ন প্রসঙ্গে কনফিগার করে।

পরিবেশের ভেরিয়েবল অ্যাক্সেস করা

// Get a specific environment variable
const apiKey = process.env.API_KEY;

// Set a default value if not defined
const port = process.env.PORT || 3000;

// Check if running in production
const isProduction = process.env.NODE_ENV === 'production';

// List all environment variables
console.log('Environment variables:', process.env);

.env ফাইল থেকে পরিবেশ ভেরিয়েবল লোড হচ্ছে

# Install dotenv package
npm install dotenv

// Load environment variables from .env file
require('dotenv').config();

// Now you can access variables from .env
console.log('Database URL:', process.env.DATABASE_URL);

🔐পরিবেশ ভেরিয়েবলের জন্য সর্বোত্তম অনুশীলন:

  • ভার্সন কন্ট্রোলে কখনই ক্রিটিকাল ডেটা কমিট করবেন না
  • স্থানীয় উন্নয়নের জন্য .env ব্যবহার করুন
  • আপনার হোস্টিং প্ল্যাটফর্মের মাধ্যমে উৎপাদনে পরিবেশের ভেরিয়েবল সেট করুন
  • আপনার README-এ সমস্ত প্রয়োজনীয় পরিবেশ ভেরিয়েবল নথিভুক্ত করুন

শিশু প্রক্রিয়া

Node.js _ .

1. একটি সাধারণ কমান্ড চালান

const { exec } = require('child_process');

exec('ls -la', (error, stdout, stderr) => {
  if (error) {
    console.error(`Error: ${error.message}`);
    return;
  }
  if (stderr) {
    console.error(`stderr: ${stderr}`);
    return;
  }
  console.log(`Output: ${stdout}`);
});

2. বড় আউটপুটের জন্য স্পন ব্যবহার করা

const { spawn } = require('child_process');

// Better for large data output
const child = spawn('find', ['/', '-type', 'f']);
child.stdout.on('data', (data) => {
  console.log(`Found file: ${data}`);
});
child.stderr.on('data', (data) => {
  console.error(`Error: ${data}`);
});
child.on('close', (code) => {
  console.log(`Child process exited with code ${code}`);
});

প্রক্রিয়া পর্যবেক্ষণ এবং কর্মক্ষমতা

1. মেমরি ব্যবহার

// Get memory usage in MB
function getMemoryUsage() {
  const used = process.memoryUsage();
  return {
    rss: `${Math.round(used.rss / 1024 / 1024 * 100) / 100} MB`,
    heapTotal: `${Math.round(used.heapTotal / 1024 / 1024 * 100) / 100} MB`,
    heapUsed: `${Math.round(used.heapUsed / 1024 / 1024 * 100) / 100} MB`,
    external: `${Math.round(used.external / 1024 / 1024 * 100) / 100} MB`
  };
}

// Monitor memory usage every 5 seconds
setInterval(() => {
  console.log('Memory usage:', getMemoryUsage());
}, 5000);

2. CPU ব্যবহার

const startUsage = process.cpuUsage();

// Do some CPU-intensive work
for (let i = 0; i < 1000000000; i++) {}

const endUsage = process.cpuUsage(startUsage);
console.log('CPU usage (user):', endUsage.user / 1000, 'ms');
console.log('CPU usage (system):', endUsage.system / 1000, 'ms');

মূল ধারণা

প্রসেস অবজেক্ট

অ্যাক্সেস সিস্টেম এবং প্রক্রিয়া তথ্য

প্রক্রিয়া নিয়ন্ত্রণ

অ্যাপ্লিকেশনটি শুরু করুন, বন্ধ করুন এবং পরিচালনা করুন

পরিবেশ পরিবর্তনশীল

বিভিন্ন প্রসঙ্গে অ্যাপ্লিকেশন আচরণ কনফিগার করুন

শিশু প্রক্রিয়া

সিস্টেম কমান্ড এবং অন্যান্য স্ক্রিপ্ট চালান

ত্রুটি হ্যান্ডলিং

ধরা না পড়া ব্যতিক্রম এবং প্রত্যাখ্যানগুলি পরিচালনা করুন

সংকেত

SIGINT এবং SIGTERM এর মতো সিস্টেম সংকেতগুলিতে সাড়া দিন

PM2

উত্পাদন প্রক্রিয়া পরিচালনার জন্য অপরিহার্য

কর্মক্ষমতা নিরীক্ষণ

মেমরি এবং CPU ব্যবহার মনিটর

দক্ষ প্রক্রিয়া ব্যবস্থাপনা নির্ভরযোগ্য এবং রক্ষণাবেক্ষণযোগ্য Node.js অ্যাপ্লিকেশন তৈরির জন্য গুরুত্বপূর্ণ, বিশেষ করে উৎপাদন পরিবেশে।

অনুশীলন করুন

একটি সফল বার্তা সহ Node.js বন্ধ করতে সঠিক কোডটি টেনে আনুন এবং ফেলে দিন।

process.stop(0);
✗ ভুল! "process.stop()" Node.js-এ একটি বৈধ পদ্ধতি নয়
process.terminate();
✗ ভুল! "process.terminate()" Node.js-এ একটি বৈধ পদ্ধতি নয়
process.exit(0);
✓ ঠিক আছে! "process.exit(0)" হল একটি সফল স্থিতি কোড সহ Node.js প্রক্রিয়া বন্ধ করার সঠিক পদ্ধতি
process.end();
✗ ভুল! "process.end()" Node.js-এ একটি বৈধ পদ্ধতি নয়